package pe.com.bn.sach.service.impl;


import java.io.OutputStream;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.ibm.mq.MQException;
import pe.com.bn.mq.service.invoke.ServiceReniec;
import pe.com.bn.mq.service.reniec.Identidad2;
import pe.com.bn.sach.common.Util;
import pe.com.bn.sach.dao.ReniecDAO;
import pe.com.bn.sach.domain.Bnchf02Cliente;  
import pe.com.bn.sach.service.ReniecService;
 
public class ReniecServiceImpl implements ReniecService{
	protected final Log logger = LogFactory.getLog(getClass());

	
	ReniecDAO reniecDAO;
	public void setReniecDAO(ReniecDAO reniecDAO) {
		this.reniecDAO = reniecDAO;
	}

	
	public void streamImage(String dni, final OutputStream contentStream) throws Exception{
		reniecDAO.streamImage(dni, contentStream);
	}
	
	public void streamImageFirma(String dni, final OutputStream contentStream) throws Exception{
		reniecDAO.streamImageFirma(dni, contentStream);
	}
	
	
	public Bnchf02Cliente consultaConsolidada(String dni,String operApp)
	throws Exception, MQException {
		
		Bnchf02Cliente bnchf02Cliente = new Bnchf02Cliente();
		ServiceReniec mqManager = new ServiceReniec();
		Identidad2 arrayOfStringHolder =  mqManager.consulta2(dni, operApp);
		
	   if(arrayOfStringHolder.getError().equals("0000"))
	   {	 
	   		
	   		String[] nombres = Util.RENIEC.getNombresPrimeroSegundo(arrayOfStringHolder.getNombres());
	   		String[] apellidos = Util.RENIEC.getApellidosMaternoCasada(arrayOfStringHolder.getApellidoMaterno(),arrayOfStringHolder.getSexo(),arrayOfStringHolder.getEstadoCivil());
	   		  bnchf02Cliente.getBnchf01Persona().setF01NumDoc(arrayOfStringHolder.getDNI());
			  bnchf02Cliente.getBnchf01Persona().setF01ApePat(arrayOfStringHolder.getApellidoPaterno());
			  bnchf02Cliente.getBnchf01Persona().setF01ApeMat(apellidos[0]);
			  bnchf02Cliente.getBnchf01Persona().setF01NombPri(nombres[0]);
			  bnchf02Cliente.getBnchf01Persona().setF01NombSeg(nombres[1]);
			  //nacimiento
			  bnchf02Cliente.getBnchf01Persona().getBnchf08Ubigeo().getId().setF08IdDpto(arrayOfStringHolder.getCodigoUbigeoDepaNac());
			  bnchf02Cliente.getBnchf01Persona().getBnchf08Ubigeo().getId().setF08IdProv(arrayOfStringHolder.getCodigoUbigeoProvNac());
			  bnchf02Cliente.getBnchf01Persona().getBnchf08Ubigeo().getId().setF08IdDistri(arrayOfStringHolder.getCodigoUbigeoDistNac());
			  bnchf02Cliente.getBnchf01Persona().getBnchf08Ubigeo().setF08DescDpto(arrayOfStringHolder.getDepaNacimiento());
			  bnchf02Cliente.getBnchf01Persona().getBnchf08Ubigeo().setF08DescProv(arrayOfStringHolder.getProviNacimiento());
			  bnchf02Cliente.getBnchf01Persona().getBnchf08Ubigeo().setF08DescDistri(arrayOfStringHolder.getDistNacimiento());
			  bnchf02Cliente.setDirecDomic(arrayOfStringHolder.getDireccionDomicilio());
			  String fecha="";
			  fecha=arrayOfStringHolder.getFechaNacimiento();
				if(fecha.trim().length()==8){
					fecha=fecha.substring(6,8)+"/"+fecha.substring(4,6)+"/"+fecha.substring(0,4);
					bnchf02Cliente.getBnchf01Persona().setF01FeNacString(fecha);
				}else{
					bnchf02Cliente.getBnchf01Persona().setF01FeNacString("");
				}
			  
			  bnchf02Cliente.getBnchf01Persona().setF01Sexo(arrayOfStringHolder.getSexo() == null ? null : new Long(arrayOfStringHolder.getSexo()));
			  bnchf02Cliente.getBnchf01Persona().setF01StdoCivil(arrayOfStringHolder.getEstadoCivil() == null ? null : new Long(arrayOfStringHolder.getEstadoCivil()));
			  bnchf02Cliente.getBnchf01Persona().getBnchf10Instruccion().setF10IdInstruccion(arrayOfStringHolder.getGradoInstruccion() == null ? null : new Long(arrayOfStringHolder.getGradoInstruccion()));
			  //domicilio
			  bnchf02Cliente.setIddescDptodirec(arrayOfStringHolder.getCodigoUbigeoDepartament());
			  bnchf02Cliente.setIddescProvdirec(arrayOfStringHolder.getCodigoUbigeoProvincia());
			  bnchf02Cliente.setIddescDistridirec(arrayOfStringHolder.getCodigoUbigeoDistrito());
			  bnchf02Cliente.setDescDptodirec(arrayOfStringHolder.getDescDepartamentoDomicilio());
			  bnchf02Cliente.setDescProvdirec(arrayOfStringHolder.getDescProvinciaDomicilio());
			  bnchf02Cliente.setDescDistridirec(arrayOfStringHolder.getDescDistritoDomicilio());
	   }
	    
		return bnchf02Cliente;
	}
	
}
